package com.xzj.admin.analysis.base.constants;

import lombok.Getter;

/**
 * @program: xzj-admin
 * @ClassName: CommonEnums
 * @description: 公共常量类
 * @author: XiaZunJun
 * @create: 2024-11-11 16:37
 */
public interface CommonEnums {

    /**
     * 云ID 常量枚举
     */
    @Getter
    enum CLOUD_ID {
        CTY("10010030"), ITY("10010020"),TYY("10010010"),YCYC("10010080");
        final String value;

        CLOUD_ID(String value) {
            this.value = value;
        }

        public static String convertCloudId(String cloudId) {
            String result = null;
            for(CLOUD_ID c : CLOUD_ID.values()){
                if (cloudId.equals(c.getValue())) {
                    result = c.name();
                    if(CLOUD_ID.YCYC.equals(c)){
                        result = CLOUD_ID.TYY.name();
                    }
                    break;
                }
            }
            return result;
        }
        public boolean equals(String equalVal) {
            return getValue().equals(equalVal);
        }
    }

    /**
     * 中间库消息标签 常量枚举
     */
    enum MESSAGE_TAG {
        add, edit, del, pushed;

        public boolean equals(String equalVal) {
            return name().equals(equalVal);
        }
    }

    /**
     * 云类型常量枚举
     */
    enum CLOUD_TYPE {
        DEFAULT,GZ, VC, FC, CAS, VSUITE,ZYY,YCYC;

        public boolean equals(String equalVal) {
            return name().equals(equalVal);
        }
    }

    @Getter
    enum JOIN {
        DEFAULT(":");
        final String value;

        JOIN(String value) {
            this.value = value;
        }

        public boolean equals(String equalVal) {
            return getValue().equals(equalVal);
        }
    }

    /**
     * 接入资源类型 常量枚举
     */
    enum RESOURCE_TYPE {
        vm, // 虚机
        host, // 宿主机
        region, // 云资源池
        datacenter, // 站点/可用区
        cluster, // 集群
        storage, // 集群
        flavors, // 计算资源
        storageUnit, // 存储设备
        volume, // 云磁盘
        vSwitch, // 虚拟交换机
        pushEnd, // 推送完成标签
        network, // 推送完成标签
        portGroup, // 推送完成标签
        vnic, // 推送完成标签
        ;

        public boolean equals(String equalVal) {
            return name().equals(equalVal);
        }
    }

    @Getter
    enum JSON_FIELD {
        EXTEND("extend"),
        EXTEND_REGION("regionId"),
        EXTEND_PROVINCE("provinceId"),
        ;
        final String value;

        JSON_FIELD(String value) {
            this.value = value;
        }

        public boolean judgeEquals(String equalVal) {
            return !getValue().equals(equalVal);
        }
    }

    @Getter
    enum CACHE_KEY {
        MD5("MD5"),
        RELATE("RELATE"),
        PREFIX("cacheKeyPrefix");
        final String value;
        CACHE_KEY(String value) {
            this.value = value;
        }
        public boolean equals(String equalVal) {
            return name().equals(equalVal);
        }
    }
}
